// pages/arrangement/arrangement.js
const db = wx.cloud.database();
const app = getApp();
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 任务派发对象栏
    show: false,
    doctor: '',
    doctors: [],
    photo: '',
    // 任务描述栏
    desc: '',
    // 移植附件上传data
    media: []
  },

  // 1、任务派发栏函数
  //选择派发对象
  onSelect(event) {
    this.setData({
      photo: event.detail.user_photo,
      doctor: event.detail.name,
      recer_id: event.detail._openid
    })
  },

  // 关闭选择框
  onClose() {
    this.setData({
      show: false
    });
  },

  // 打开选择框
  onOpen() {
    this.setData({
      show: true
    })
  },

  // 2、任务描述栏函数
  //改变任务描述时
  setDesc(event) {
    this.setData({
      desc: event.detail.value
    })
  },

  // 移植附件上传开始
  //this.data说明：只需要如上的media数组即可
 
  // 选择上传：图片-视频 选择框
  actioncnt: function () {
    var _this = this;
    wx.showActionSheet({
      itemList: ['图片', '视频'],
      success: function (res) {
        if (res.tapIndex == 0) {
          _this.chooseImage()
        }
        if (res.tapIndex == 1) {
          _this.chooseVideo()
        }
      },
      fail: function (res) {
        console.log(res.errMsg)
      }
    })
  },

  // 选择照片来源
  chooseImage: function () {
    var _this = this;
    // 获取图片或视频的数量
    let len = this.data.media.length;

    // 在本地选择需上传的图片
    wx.chooseImage({
      count: 9 - len, //图片和视频上传数量之和不超过9
      sizeType: ['original'], //原图
      sourceType: ['album', 'camera'], //可以指定来源是相册还是相机, 默认二者都有
      success: function (res) {
        wx.showToast({
          title: '正在上传...',
          icon: "loading",
          mask: true,
          duration: 1000
        })
        // 返回选定照片的本地文件路径列表,tempFilePaths可以作为img标签的scr属性显示图片
        var media_list = [] //加在media末尾的元素
        var img_list = res.tempFilePaths //新添图片路径数组
        for (var i = 0; i < img_list.length; i++) {
          media_list.push({
            url: img_list[i],
            type: "image"
          })
        }
        // 将新图片的数组添加到media尾部
        _this.setData({
          media: _this.data.media.concat(media_list)
        })
      },
      fail: function () {
        wx.showToast({
          title: '图片上传失败',
          icon: 'none'
        })
        return;
      }
    })
  },

  // 选择视频来源
  chooseVideo: function () {
    var _this = this;
    // 从本地选择视频
    wx.chooseVideo({
      success: function (res) {
        wx.showToast({
          title: '正在上传...',
          icon: "loading",
          mask: true,
          duration: 1000
        })
        // 将视频添加到media头部
        _this.setData({
          media: [{
            url: res.tempFilePath,
            type: "video"
          }].concat(_this.data.media)
        })

      }
    })
  },

  //预览图片或视频
  //参数res:res.currentTarget.dataset.index即为data-index指定内容
  previewMedia(res) {
    wx.previewMedia({
      sources: this.data.media,
      current: res.currentTarget.dataset.index
    })
  },

  //删除图片或视频
  //参数res:res.currentTarget.dataset.index即为data-index指定内容
  deleteMedia(res) {
    var _this = this;
    var index = res.currentTarget.dataset.index
    var temp_list = this.data.media
    wx.showModal({
      title: '提示',
      content: '确认要删除吗?',
      success: function (res) {
        if (res.confirm) {
          temp_list.splice(index, 1);
        } else if (res.cancel) {
          return
        }
        _this.setData({
          media: temp_list
        })
      }
    })
  },

  //函数submit为移植时需要更改的地方
  // 4、提交任务派发
  submit() {
    var _this = this
    var media = [] //存储云端图片或视频路径的数组
    wx.showLoading({
      title: '上传中...',
    })
    var index = 0

    // 上传图片或视频到云端
    Promise.all(this.data.media.map((item) => {
        return wx.cloud.uploadFile({
          // 移植：可更改视频和图片上传云端的路径，此处默认为task文件夹，更改'task/'部分即可
          cloudPath: 'task/' + Date.now()+(index++) + item.url.match(/\.[^.]+?$/)[0], // 文件名称 
          filePath: item.url,
        })
      }))
      .then(res => {
        //获取任务的media
        for (var i = 0; i < res.length; i++) {
          media.push({
            url: res[i].fileID,
            type: _this.data.media[i].type
          })
        }
        //更新media:将其中的url从本地路径变为云存储路径
        _this.setData({
          media:media
        })

        //移植：需要新增或更改记录的数据库操作
        var that = _this
        db.collection('task').add({
            data: {
              task_puber: app.globalData.open_id,
              task_recer: that.data.recer_id,
              task_pub_des: that.data.desc,
              task_pub_time: new Date(),
              task_pub_media: that.data.media,
              task_status: false
            }
          })
          .then(res => {
            // 成功则显示成功
            //移植：上传成功提示信息，改变wx.showToast的title
            wx.hideLoading()
            wx.showToast({
              title: '派发成功',
              icon: 'success',
              duration: 800
            })
            // 清空本地数据
            // 移植：更改包括本地数据清空以及设定跳转页面等
            that.setData({
              doctor: '',
              desc: '',
              photo: '',
              media:[]
            })
          })
      })
  },

  // 移植附件上传结束

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    wx.showToast({
      title: '加载中...',
      icon: 'loading',
    })
    // 调用云函数获取术前成人列表
    wx.cloud.callFunction({
        name: 'wwxFuns',
        data: ({
          name: 'get_doctors'
        })
      })
      .then(res => {
        wx.hideToast()
        this.setData({
          doctors: res.result
        })
      })
      .catch(res => {
        console.log('error!')
      })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})